package com.neusoft.service;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.neusoft.bean.AdminInfoBean;
import com.neusoft.bean.AdminInfoBeanDTO;
import com.neusoft.db.DBProvider;
import com.neusoft.myutils.MyUtil;

public class AdminInfoService {

	/**
	 * 根据用户信息验证用户信息合法性
	 * 
	 * @param adminB
	 *            参数实体bean对象
	 * @return 查询结果集
	 */
	public List<AdminInfoBean> doAdminLogin(AdminInfoBean adminB) {
		// 返回值
		List<AdminInfoBean> lstAdminB = null;
		// sql语句
		String strSql = "select * from tbadmininfo where adminname=? and adminpsw=?";
		// 执行查询操作
		lstAdminB = MyUtil.getNewInstance(DBProvider.class).query(strSql, new BeanListHandler<>(AdminInfoBean.class),
				adminB.getAdminName(), adminB.getAdminPsw());

		return lstAdminB;
	}

	/**
	 * 保存admin的数据信息
	 * 
	 * @param adminB
	 *            被保存的数据
	 * @return 数据库操作所影响的记录条数
	 */
	public int saveAdminInfo(AdminInfoBean adminB) {
		int val = 0;
		// sql语句
		String strSql = "insert into tbadminInfo(adminName,adminPsw,amdinSex,amdinAge,adminTel,adminEmail,adminCreateTime) "
				+ " values (?,?,?,?,?,?,to_date(?,'yyyy-mm-dd HH24:mi:ss'))";
		// 执行保存操作
		val = MyUtil.getNewInstance(DBProvider.class).update(strSql, adminB.getAdminName(), adminB.getAdminPsw(),
				adminB.getAmdinSex(), adminB.getAmdinAge(), adminB.getAdminTel(), adminB.getAdminEmail(),
				MyUtil.convertDate2String(adminB.getAdminCreateTime(), "yyyy-MM-dd HH:mm:ss"));
		return val;
	}

	/**
	 * 获取所有管理员信息
	 * 
	 * @param descOrasc
	 *            排序标准（0：倒序，其他正序）
	 * @return 查询的管理员信息
	 */
	public List<AdminInfoBean> getAllAdminInfo(int descOrasc) {
		// sql语句
		String strSql = " select * from tbadmininfo ";
		// 排序处理--倒序
		if (descOrasc == 0) {
			strSql += " order by adminid desc ";
		}
		// 执行保存操作
		List<AdminInfoBean> lstAdmins = MyUtil.getNewInstance(DBProvider.class).query(strSql,
				new BeanListHandler<>(AdminInfoBean.class));
		return lstAdmins;
	}

	/**
	 * 根据查询条件查询管理员信息
	 * 
	 * @param adminBDTO
	 *            查询条件实体对象
	 * @return 查询结果集
	 */
	public List<AdminInfoBean> getAdminInfoByParas(AdminInfoBeanDTO adminBDTO) {
		// sql语句		
		StringBuilder sb = new StringBuilder(" select * from tbadmininfo where 1=1 ");
		// 查询条件结果集
		List<Object> lstParas = new ArrayList<>();
		// 根据条件拼写sql查询语句
		// 用户名条件
		if (MyUtil.isNotNVLOrEmpty(adminBDTO.getAdminName())) {
			// 添加sql语句的过滤条件
			sb.append(" and adminname like ? ");
			// 添加过滤条件值
			lstParas.add("%" + adminBDTO.getAdminName() + "%");
		}
		// 性别条件
		if (MyUtil.isNotNVLOrEmpty(adminBDTO.getAmdinSex())) {
			// 添加sql语句的过滤条件
			sb.append(" and amdinsex=? ");
			// 添加过滤条件值
			lstParas.add(adminBDTO.getAmdinSex());
		}
		// 年龄条件
		Integer amdinage = adminBDTO.getAmdinAge();
		if (amdinage != null && amdinage.intValue() > 0) {
			// 添加sql语句的过滤条件
			sb.append(" and amdinage >= ? ");
			// 添加过滤条件值
			lstParas.add(amdinage);
		}
		Integer amdinage2 = adminBDTO.getAmdinAge2();
		if (amdinage2 != null && amdinage2.intValue() > 0) {
			// 添加sql语句的过滤条件
			sb.append(" and amdinage <= ? ");
			// 添加过滤条件值
			lstParas.add(amdinage2);
		}
		// 邮箱条件
		if (MyUtil.isNotNVLOrEmpty(adminBDTO.getAdminEmail())) {
			// 添加sql语句的过滤条件
			sb.append(" and adminemail like ? ");
			// 添加过滤条件值
			lstParas.add("%" + adminBDTO.getAdminEmail() + "%");
		}
		// 电话条件
		if (MyUtil.isNotNVLOrEmpty(adminBDTO.getAdminTel())) {
			// 添加sql语句的过滤条件
			sb.append(" and admintel like ? ");
			// 添加过滤条件值
			lstParas.add("%" + adminBDTO.getAdminTel() + "%");
		}
		// 创建日期条件
		String admincreatetime = MyUtil.convertDate2String(adminBDTO.getAdminCreateTime(), "yyyy-MM-dd HH:mm:ss");
		if (MyUtil.isNotNVLOrEmpty(admincreatetime)) {
			// 添加sql语句的过滤条件
			sb.append(" and to_char(admincreatetime,'yyyy-MM-dd HH24:mi:ss') >= ? ");
			// 添加过滤条件值
			lstParas.add(admincreatetime);
		}
		String admincreatetime2 = MyUtil.convertDate2String(adminBDTO.getAdminCreateTime2(), "yyyy-MM-dd HH:mm:ss");
		if (MyUtil.isNotNVLOrEmpty(admincreatetime2)) {
			// 添加sql语句的过滤条件
			sb.append(" and to_char(admincreatetime,'yyyy-MM-dd HH24:mi:ss') <= ? ");
			// 添加过滤条件值
			lstParas.add(admincreatetime2);
		}

		// 执行保存操作
		List<AdminInfoBean> lstAdmins = MyUtil.getNewInstance(DBProvider.class).query(sb.toString(),
				new BeanListHandler<>(AdminInfoBean.class), lstParas.toArray());
		return lstAdmins;
	}
}
